<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <!--  
        1.算术
            + - * /
            % 取模,求余数
            ** 指数
    -->
    <script>
        console.log( 5 % 3);
        console.log( 2 ** 3);
        console.log('------------- 分隔符 --------------');
        // 取模的高阶使用
        // 规律1:小数据 除以大数据的余数的结果都是小数据
        // 规律2:取模结果的正负:取决于第一位的正负
        // 取模结果的范围
        // %n的结果:0~(n-1)
        // 小结:(任意数% y-x+1) + x 的结果范围:x~y
        // 任何数%2余数为0,则证明那个数是偶数
        // 任何数%2余数为1,则证明那个数是奇数
    </script>
    <!--  
        2. 自增自减
            ++ 自己给自己加1
            -- 自己给自己减1
            写法:
                a++ 先返回变量a,再给变量a+1
                ++a 先给变量a+1,再返回变量a
            注意:
                自增自减能改变变量本身
    -->
    <script>
        var x = 5;
        var y = x++;
        console.log(x,y);

        var x = 5;
        var y = ++x;
        console.log(x,y);

        var x = 5;
        var y = x + 2;
        console.log(x,y);
    </script>
    <!--  
        3. 赋值运算符
            = 先计算右边的,再赋值给嘴边
            +=
            -=
            *=
            /=
            %=
            **=  a **= b ==> a = a ** b
    -->
    <script>
        var a = 5;
        var b = 10;
        a += b;
        console.log(a,b);
        console.log('------------- 分隔符 --------------');
    </script>
    <!--  
        4. 比较运算符
            结果:true 或 false
            >   >=
            <   <=
            ==      比较两边的值是否等价
            ===     比较两边的值是否等价 且数据类型是否一致(全等)
            !=      比较两边的值是否不等价
            !==     只有全等时为false,其余都是true
    -->
    <script>
        console.log(1 == true);// Number(1) == Number(true)
        console.log(1 == false);
        console.log(1 === false);
        console.log(1 != 2);
        console.log(1 != 1);
        console.log(1 !== 2.0);
    </script>
    <!--  
        5. 三元运算符
            一元运算符:++ --
            二元运算符:+ - * /
            三元运算符:?:
            条件表达式:查看最终结果转为boolean时是true还是false
            条件表达式? true环境 : false环境
            注意:
                简单的分支可以使用三元运算符(一行就能搞定)
                复杂的分支建议用if 分支or switch分支
    -->
    <script>
        var height = '18';
        console.log(height == '18'? '高' : '矮');
    </script>
    <!--  
        6. 逻辑运算符
                    运算符         运算规则
            逻辑与     &&          两边为真即为真(最后一个真),一边为假即为假(第一个家)
            逻辑或     ||          一边为真即为真(第一个真),两边为假即为假(最后一个为假)
            逻辑非     !           真即是假,假即是真
            注意:
            * 逻辑非的运算结果只有:true 或 false.而逻辑与/或 并不是
            * 优先级:逻辑非 > 逻辑与 >逻辑或
    -->
    <script>
        console.log( true && true);
        console.log( true && false);
        console.log('------------- 分隔符 --------------');
        console.log( true || true);
        console.log( true || false);
        console.log(!2);
        var x = 10;
        var y = 2;
        var z = 0;
        console.log( x && y || z);
    </script>
</body>
</html>